Method of providing non-native notifications and system thereof

ABSTRACT

Embodiments of the present invention are directed to a method of providing non-native notifications and system thereof. These notifications are generated by non-native applications that can be executed on a target device, specifically within a guest environment on the target device, or can be executed on a physically disjoint source device that is communicatively coupled with the target device via a local pairing mechanism or a service in a cloud. The application player and the source device are able to capture these non-native notifications. The target device is able to receive and present these non-native notifications to a user. Notifications include alerts, reminders, updates and messages generated by non-native applications. The user does not need to access the non-native applications, or the application player or source device they are executing on to see the non-native notifications. Instead, the user views these non-native notifications at a central location on the target device.

RELATED APPLICATIONS

This application claims benefit of priority under 35 U.S.C. section119(e) of the co-pending U.S. Provisional Patent Application Ser. No.61/545,079, filed Oct. 7, 2011, entitled “System and Method for MappingKeys to Touch or Mouse Clicks,” and is a continuation in part of theco-pending U.S. patent application Ser. No. 13/543,052, filed Jul. 6,2012, entitled “Cloud-Based Data Synchronization,” both of which arehereby incorporated by reference in their entirety.

The co-pending U.S. patent application Ser. No. 13/543,052, filed Jul.6, 2012, entitled “Cloud-Based Data Synchronization,” claims benefit ofpriority under 35 U.S.C. section 119(e) of the co-pending U.S.Provisional Patent Application Ser. No. 61/504,983, filed Jul. 6, 2011,entitled “Application Test Drive,” and co-pending U.S. ProvisionalPatent Application Ser. No. 61/504,978, filed Jul. 6 2011, entitled“Cloud-Based App Sync,” both of which hereby incorporated by referencein their entirety.

FIELD OF THE INVENTION

The present invention relates to notifications. More particularly, thepresent invention relates to a method of providing non-nativenotifications and system thereof.

BACKGROUND OF THE INVENTION

A marketplace is an online digital distribution center that deliverscontent to devices over a network. A marketplace can be an establishedapplication store, such as Google Apps Marketplace or Apple's AppStores,or can be provided by a mobile carrier, such as AT&T or Verizon.Application developers typically publish developed applications in themarketplace to which for users subscribe. Users typically are notallowed to push any data to the marketplace.

FIG. 1 illustrates a system 100 for delivery of content. The system 100includes a marketplace 105 and a plurality of devices 110 a, 110 b. Theplurality of devices 110 a, 110 b are coupled to the marketplace 105 foruser(s) of these devices 110 a, 110 b to retrieve applications publishedby application developers onto these devices 110 a, 110 b. If a userwishes to have an application, such as Angry Birds Space, running oneach device 110 a, 110 b, the user may separately download Angry BirdsSpace from the marketplace 105 on the devices 110 a, 100 b. For example,in FIG. 1, the user's tablet 110 a connects with and downloads AngryBirds Space from the marketplace 105. Similarly, the user's smart phone110 b connects with and downloads Angry Birds Space from the marketplace105. This process involves repeatedly visiting the marketplace 105. Inaddition, if Angry Birds Space was removed, either intentionally oraccidentally, from the tablet 110 a, and the user wants to have AngryBirds Space running on the tablet 110 a again, the user would need toyet again visit the marketplace 105 to download Angry Birds Space fromthe marketplace 105 onto the tablet 110 a.

With the proliferation of devices, it is typical for any user to ownmore than one device, such as the tablet 110 a and the smart phone 110 bof FIG. 1. In fact, it is not uncommon for a user to have more than twodevices at a time, such as a laptop computer and two smart phones, onefor personal use and another for corporate use. The user can accesscorporate email from the laptop computer, have alarms programmed on thepersonal smart phone, and have meeting events set in the calendar on thecorporate smart phone. Each device is able to provide the user withnotifications generated by applications on the device. A notification,no matter how loud it rings or chimes or how strong it vibrates, is notuseful if the user is not aware of the notification. It could simply bethat the user did not hear the notification (e.g., the user was in anoisy subway), was not able to get to the device (e.g., the device wasat the bottom of gym bag) and had thereafter forgotten about thenotification, had simply left the device elsewhere, or for anotherreason. Missing any notification causes inconveniences.

The present invention addresses at least these limitations in the priorart.

SUMMARY OF THE INVENTION

Embodiments of the present invention are directed to a method ofproviding non-native notifications and system thereof. Thesenotifications are generated by non-native applications that can beexecuted on a target device, specifically within a guest environment onthe target device, or can be executed on a physically disjoint sourcedevice that is communicatively coupled with the target device via alocal pairing mechanism or a service in a cloud. The application playerand the source device are able to capture these non-nativenotifications. The target device is able to receive and present thesenon-native notifications to a user. Notifications include alerts,reminders, updates and messages generated by non-native applications.The user does not need to access the non-native applications, or theapplication player or source device they are executing on to see thenon-native notifications. Instead, the user can view these non-nativenotifications at a central location on the target device.

In one aspect, a non-transitory computer-readable medium is provided.The non-transitory computer-readable medium stores instructions that,when executed by a computing device including a host operating system,cause the computing device to perform a method. The method includesobtaining from a notification tool for a notification generated by anon-native application, and informing a user of the notification. Thenotification can be an SMS message or an alert regarding an event.

In some embodiments, the computing device also includes a guestoperating system, and the non-native application is a guest operatingsystem specific application executing in the guest operating system.

Alternatively or in addition to, the computing device is communicativelycoupled with an electronic device, and the non-native application is anapplication executing on the electronic device. In some embodiments, thecomputing device and the electronic device are coupled via a cloud. Insome embodiments, the computing device and the electronic device arecoupled via a local pairing mechanism.

In some embodiments, the method also includes allowing the user toaccess data associated with the notification. The data can be visuallyand/or auditorially provided to the user.

In some embodiments, informing a user of the notification includesdisplaying the notification at a central location on the computingdevice. In some embodiments, informing a user of the notificationincludes displaying the notification over a work area.

In some embodiments, the method also includes receiving user input, andpushing the user input to the notification tool.

In another aspect, a system is provided. The system includes anotification tool configured to capture a notification generated by anon-native application. The system also includes a target device whichincludes a message center. The message center is typically incommunication with the notification tool and is configured to inform auser of the notification. In some embodiments, the message center isconfigured to obtain user input in response to the notification to beprovided to the notification tool.

The non-native application can be a text messaging application, a newsfeed application, a networking application, an email application, acalendar application, a game application, a tool application, amarketing application, or an alarm application. Other applications arecontemplated.

In some embodiments, the target device supports a host operating systemand a guest operating system, and wherein the non-native application isa guest operating system specific application executing on the targetdevice.

In some embodiments, the system also includes a source device whichincludes the notification tool, and the non-native application executeson the source device. The target device and the source device can becommunicatively coupled via a local pairing mechanism. Alternatively,the system can include a cloud, and the target device can becommunicatively coupled with the source device via the cloud; the sourcedevice and the target device are each configured to at least one ofpublish and subscribe to data from the cloud.

In some embodiments, the system can include a plurality of sourcedevices communicatively coupled with the target device. Each sourcedevice includes one or more applications configured to providenotifications regarding event changes, and the target device isconfigured to receive such notifications from the source devices.

In yet another aspect, a method is provided. The method includescommunicatively coupling a target device and a source device, the sourcedevice receiving a notification generated by an application running onthe source device, and the target device displaying a pane in theforeground of a workspace on the target device, the pane includinginformation regarding the notification. In some embodiments, the targetdevice and the source device are communicatively coupled via a localpairing mechanism or a cloud.

In yet another aspect, a method is provided. The method includes anapplication player receiving a notification generated by an applicationrunning within the application player on a computing device, and thecomputing device displaying a pane in the foreground of a workspace onthe target device, the pane including information regarding thenotification. In some embodiments, the application player is associatedwith a guest environment.

BRIEF DESCRIPTION OF THE DRAWINGS

Reference will now be made in detail to implementations of the presentinvention as illustrated in the accompanying drawings. The samereference indicators will be used throughout the drawings and thefollowing detailed description to refer to the same or like parts.

FIG. 1 illustrates a system for delivery of content according to theprior art.

FIG. 2 illustrates an exemplary system for synching data across devicesin accordance with the present invention.

FIG. 3A illustrates an exemplary method of enabling publishing andsubscription of data in accordance with the present invention.

FIG. 3B illustrates an exemplary method of retrieving data from a cloudin accordance with the present invention.

FIG. 4 illustrates a block diagram of an exemplary computing device inaccordance with the present invention.

FIG. 5A illustrates an exemplary system for synching data between twodevices in accordance with the present invention.

FIG. 5B illustrates an exemplary method for synching applicationsbetween two devices of FIG. 5A in accordance with the present invention.

FIGS. 5C-5E illustrate exemplary GUIs of FIG. 5B in accordance with thepresent invention.

FIG. 6A illustrates another exemplary system for synching data betweentwo devices in accordance with the present invention.

FIG. 6B illustrates an exemplary method for synching applicationsbetween two devices of FIG. 6A in accordance with the present invention.

FIG. 6C illustrates an exemplary method of test driving an applicationin accordance with the present invention.

FIG. 7A-7C illustrate exemplary notification scenarios in accordancewith the present invention.

FIG. 8 illustrates an exemplary method of a message center on a targetdevice in accordance with the present invention.

DETAILED DESCRIPTION OF THE INVENTION

In the following description, numerous details are set forth forpurposes of explanation. However, one of ordinary skill in the art willrealize that the invention can be practiced without the use of thesespecific details. Thus, the present invention is not intended to belimited to the embodiments shown but is to be accorded the widest scopeconsistent with the principles and features described herein.

Cloud-Based Data Synchronization (CBDS) Overview

In some embodiments, two or more devices associated with an account in acloud can be synched. The account is configured to manage publishing andsubscription relationships between these devices such that a firstdevice is able to publish data to the account in the cloud, and a seconddevice is able to subscribe to the data from the account. In someembodiments, the account is configured to determine whether the seconddevice has proper dependencies for subscribing to the data, and toprevent the second device from subscribing to the data upon determiningthat the second device does not have proper dependencies. However, insome embodiments, proper dependencies are automatically satisfied bydownloading and installing a tool configured to properly process thedata (e.g., execute applications) on the second device. In someembodiments, the tool is the BlueStacks™ application player.

The BlueStacks™ application player is disclosed in the co-pendingapplication Ser. No. 13/479,086, entitled “Apparatuses, Systems andMethods of Switching Operating Systems,” filed on May 23, 2012, and inthe co-pending application Ser. No. 13/479,056, entitled “ApplicationPlayer,” filed on May 23, 2012, which are hereby incorporated byreference.

FIG. 2 illustrates an exemplary system 200 for synching data acrossdevices in accordance with the present invention. The system 200includes a marketplace 205, a plurality of devices 210-215, andBlueStacks™ cloud service hosted in the cloud 220. The marketplace 205is similarly configured as the marketplace 105. Each device 210-215 canbe communicatively coupled with the marketplace 205 when retrievingapplications published by application developers. Assume the devices210-215 belong to or are otherwise accessible by a user, and the userwants to synch data across the devices 210-215. The user is able toutilize the cloud service to synch data across the devices 210-215 viathe cloud 220. Although, each of the devices 210-215 shown is different,the user is able to synch data across similar devices, e.g., PC to PCsync or phone to phone sync. Typically, the user creates an account inthe cloud 220 and associates the devices 210-215 with the account. Anyof the associated devices is capable of being synched via the cloud.Each device 210-215 can support one or more operating systems, which maybe the same or different from the other operating systems supported bythe other devices 210-215. For example, the tablet 210 a is an AppleiPad, the mobile phone 210 b is an Android phone, and the computer 215is a Windows 7 PC. For another example, the computer 215 supports aguest Android operating system. Although only three devices are shown inFIG. 2, other special purpose devices, such as set top boxes andautomobile consoles to name a couple, can also be associated with theaccount for synchronization.

In some embodiments, each device must be associated with an account inthe cloud that the device is sending data to and/or receiving data from.Put differently, a device is preferably only able to access an accountthat the device is associated with. Alternatively, a device is able tosubscribe to data from any account if given the permission to do so. Adevice is a source device when it is publishing data to the cloud. Adevice is a target device when it is subscribing to data from the cloud.Data includes, but is not limited to, applications, phone book,calendar, notifications (e.g., alerts and SMS messages), email, memo, amusic file, a photo/video album, documents, files and another othersuitable data. In some embodiments, the account is configured toproperly manage intellectual property rights of applications, includingcopyrights. Notifications are further discussed below.

FIG. 3A illustrates an exemplary method 300 of enabling publishing andsubscription of data in accordance with the present invention. Assume(1) a user has already created an account in the cloud, (2) a primarydevice is already associated with the account, and (3) the user hasrequested that a secondary device be associated with the account. Insome embodiments, the user's account is configured to perform the method300. The method 300 begins at a step 305, where a unique pin for asecondary device is generated. The pin associates the user's account inthe cloud with the secondary device.

At a step 310, the pin is shown to the user. In some embodiments, thepin is displayed on the primary device.

At a step 315, the secondary device is paired with the account in thecloud upon correctly providing the pin from the secondary device to thecloud. Although pairing via a pin is discussed in this example, otherpairing techniques are contemplated including, but are not limited to,use of other shared secrets and use of public key cryptography, such asa certificate exchange.

At a step 320, publishing and subscription relationships between theprimary device and the secondary device are managed. Typically, theuser's account intelligently manages these relationships. In someembodiments, managing the relationship includes synching data betweenthe primary device and the secondary device. In some embodiments,managing the relationship includes determining whether the primarydevice has proper dependancies for subscribing data published by thesecondary device and, based on the determination, automaticallysatisfying the proper dependencies. Satisfying proper dependencies forsynching is discussed elsewhere. After the step 320, the method 300ends.

FIG. 3B illustrates an exemplary method 325 of retrieving data from thecloud in accordance with the present invention. The method 325 begins ata step 330, where data is published to an account in the cloud from asource device while the source device is communicatively coupled withthe cloud. Typically, the source device is associated with the account.In some embodiments, the data to be published to the cloud is determinedby the user. Alternatively, the data to be published is automaticallydetermined by the account, the source device, or both. After the data ispublished, the source device no longer needs to be but can remaincommunicatively coupled with the cloud. In some embodiments, the user isable to select one or more target devices to receive the data. In someembodiments, the account is configured to resolve conflicts during thetransfer of the data from the source device to the cloud.

At a step 335, the data is subscribed to a target device while thetarget device is communicatively coupled with the cloud. Typically, thetarget device is associated with the account. In some embodiments, thesource device and the target device support the same operating system.Alternatively, the source device and the target device do not supportthe same operating system. In some embodiments, the data isautomatically retrieved and downloaded onto the target device uponcoupling with the cloud. Alternatively or in addition to, userintervention is required to start, stop, and/or continue the transferfrom the cloud to the target device. In some embodiments, the user isable to indicate which data to subscribe to. After the data issubscribed, the target device no longer needs to be but can remaincommunicatively coupled with the cloud. In some embodiments, the accountis configured to resolve conflicts during the transfer of the data fromthe cloud to the target device. After the step 335, the method 325 ends.

FIG. 4 illustrates a block diagram of an exemplary computing device 400in accordance with the present invention. The computing device 400 isable to be used to acquire, cache, store, compute, search, transfer,communicate and/or display information. For example, the computingdevice 400 is able to communicatively couple with a cloud, such as thecloud 220, to synch with one or more other devices.

In general, a hardware structure suitable for implementing the computingdevice 400 includes a network interface 402, a memory 404, processor(s)406, I/O device(s) 408, a bus 410 and a storage device 412. The choiceof processor 406 is not critical as long as a suitable processor withsufficient speed is chosen. In some embodiments, the computing device400 includes a plurality of processors 406. The memory 404 is able to beany conventional computer memory known in the art. The storage device412 is able to include a hard drive, CDROM, CDRW, DVD, DVDRW, flashmemory card, RAM, ROM, EPROM, EEPROM or any other storage device. Thecomputing device 400 is able to include one or more network interfaces402. An example of a network interface includes a network card connectedto an Ethernet or other type of LAN. The I/O device(s) 408 are able toinclude one or more of the following: keyboard, mouse, monitor, display,printer, modem, touchscreen, button interface and other devices.Application(s) 414 are likely to be stored in the storage device 412 andmemory 404 and are processed by the processor 406. More or lesscomponents shown in FIG. 4 are able to be included in the computingdevice 400.

The computing device 400 can be a tablet, a mobile phone, a smart phone,a desktop computer, a laptop computer, a netbook, or any suitablecomputing device such as special purpose devices, including set topboxes and automobile consoles.

The following exemplary scenarios will help demonstrate cloud-basedsynchronization in accordance with the present invention. Although anynumber of devices can be synchronized, the first scenario and the secondscenario illustrate synching, for the sake of simplicity, between twodevices. In particular, the first scenario illustrates synchingapplications from a mobile device to a computer, and the second scenarioillustrates synching applications from the computer to the mobiledevice. Assume in these scenarios that the user has already created anaccount in the cloud and has associated the two devices (e.g., mobiledevice and computer) with the account in the cloud.

CBDS Exemplary Scenario 1: Synching Data from a Mobile Device to aComputer

FIG. 5A illustrates an exemplary system 500 for synching data betweentwo devices in accordance with the present invention. The system 500includes a marketplace 505, a plurality of devices 510, 515, andBlueStacks™ cloud service hosted in a cloud 520. In this example, theplurality of devices includes a mobile device 510 configured as a sourcedevice and a computer 515 configured as a target device. Although moredevices can be included in the system 500, only the source device 510and the target device 515 are illustrated for the sake of clarity. Insome embodiments, the marketplace 505 is similarly configured as themarketplace 205. The user is able to utilize the marketplace 505 toretrieve applications therefrom onto the source device 510. In someembodiments, the cloud 520 is similarly configured as the cloud 220. Theuser is able to utilize the cloud service to synch data (e.g.,applications) from the mobile device 510 to the computer 515 via thecloud 520.

FIG. 5B illustrates an exemplary method 550 for synching applicationsbetween the two devices of FIG. 5A in accordance with the presentinvention. The method 550 begins at a step 555, where the source device(e.g., the mobile device 510 of FIG. 5A) is paired with the account inthe cloud. In some embodiments, the source device is paired with thecloud by entering a proper pin in a companion application running on thesource device. FIG. 5C illustrates an exemplary GUI interface of thecompanion application, which allows the user to enter a pin for pairing.Typically, the pin is a unique pin previously generated for the user bythe cloud service. Other authentication procedures are contemplated.

After the source device is paired with the cloud, at a step 560,selected application(s) are published to the cloud from the sourcedevice. In some embodiments, the user is able to pick and choose from anapplications listing the application(s) to publish to the cloud, asillustrated in FIG. 5D. Alternatively or in addition to, the user isable to concurrently publish all applications to the cloud, asillustrated in FIGS. 5D-5E, by clicking on the appropriate boxes in thecompanion application. In some embodiments, the user is able toconfigure which of the devices associated with the account is/are thetarget device(s) for subscribing to the published application(s). Thesource device typically remains communicatively coupled with the accountduring publishing but can become communicatively decoupled afterpublishing.

In some embodiments, the user is able to configure the companionapplication on the source device to auto synch all applications, asillustrated in FIG. 5E, upon communicatively coupling with the account.Different techniques can be implemented to perform auto synchronization.One technique is polling. With the polling approach, the companionapplication periodically checks to see if any new applications orupdates are installed on the source device. If there are, thoseapplications and/or updates are published to the cloud. Anothertechnique is hooking into a notification feature provided by the sourcedevice. With the hooking approach, the companion application receivesnotifications from the notification feature. The notification featuretypically notifies when a new application or an update has beeninstalled on the source device. If the companion application receives anotification, then the new application and/or update are published tothe cloud. Regardless of the technique used, auto synchronization isperformed in the background, typically without or with minimal userintervention.

The account in the cloud is typically intelligent; it is able todetermine whether a target device, once it is communicatively coupledwith the account, has proper dependencies. In other words, the accountis configured to determine whether the target device is able tosubscribe to the data (e.g., applications) published by the sourcedevice. Simply put, the account is configured to determine whether thetarget device is able to run all the applications published by thesource device. In some embodiments, if the target device is not able torun an application, then the target device is not permitted to subscribeto that applications until the proper dependencies are satisfied. Insome embodiments, proper dependencies can be satisfied by downloadingand installing the BlueStacks™ application player.

At an optional step 565, an application player is downloaded andinstalled on the target device (e.g., the computer 515 of FIG. 5A) tosatisfy the proper dependencies. In some embodiments, the accountautomatically pushes a software program for the application player ontothe target device for installation. Typically, the application playersupports the same operating system as that supported by the sourcedevice. In some embodiments, even if the account determines that thetarget device does not have the proper dependencies, the target deviceis able to subscribe to those applications.

At a step 570, the target device, once communicatively coupled with thecloud, subscribes to the selected application(s) from the cloud. In someembodiments, the target device subscribes to these applications even ifthe target device cannot natively run these applications. In someembodiments, the account is configured to determine where on the targetdevice to download the selected applications. For example, theapplications are downloaded to a specific folder on the target device.For another example, if the source device's operating system isdifferent from the target device's host operating system but is the sameas the target device's guest operating system, then the selectedapplications are automatically stored in the guest environment. In otherwords, the applications are downloaded in the appropriate operatingsystem supported by the target device for execution. The subscriptioncan be user initiated and/or automatic. In some embodiments, the user isable to select to which applications to subscribe, including those thatwere published at previous times and/or by other devices associated withthe account. Alternatively or in addition, the target deviceautomatically subscribes to any new or updated applications uponcoupling with the cloud. The target device typically remainscommunicatively coupled with the account during subscription but canoptionally become communicatively decoupled after subscription. Afterthe step 570, the method 550 ends.

CBDS Exemplary Scenario 2: Synching Data from a Computer to a MobileDevice FIG. 6A illustrates another exemplary system 600 for synchingdata between two devices in accordance with the present invention. Thesystem 600 includes a marketplace 605, a plurality of devices 610, 615,and BlueStacks™ cloud service hosted in a cloud 620. In this example,the plurality of devices includes a mobile device 610 configured as atarget device and a computer 615 configured as a source device. Althoughmore devices can be included in the system 600, only the source device615 and the target device 610 are illustrated for the sake of clarity.In some embodiments, the marketplace 605 is similarly configured as themarketplace 205. The user is able to utilize the marketplace 605 toretrieve applications therefrom. In some embodiments, the user is ableto download and install the BlueStacks™ application player, which can beconfigured as an application broker, on the computer 615. The user isable to search for an application by using the application broker, whichis configured as a single interface that accesses one or moremarketplaces 605. In some embodiments, the cloud 620 is similarlyconfigured as the cloud 220. The user is able to utilize the cloudservice to synch data (e.g., applications) from the computer 615 to themobile device 610 via the cloud 620.

FIG. 6B illustrates an exemplary method 625 for synching applicationsbetween the two devices of FIG. 6A in accordance with the presentinvention. The method 625 begins at a step 630, where the source device(e.g., the computer 615 of FIG. 6A) obtains an application. In someembodiments, the source device obtains the application using theBlueStacks™ application player when configured as an application brokerto search for a particular application from one or more marketplaces.The BlueStacks™ application player is typically auto-configured tocommunicatively couple with the cloud.

At a step 635, the application is published to the cloud from the sourcedevice. In some embodiments, the application is published to the cloudvia the BlueStacks™ application player. In some embodiments, the user isable to pick and choose from an applications listing the application(s)to publish to the cloud. The applications listing can displayapplications for only one of the operating systems supported by thesource device. The application listing can also display applications forsome or all of the operating systems supported by the source device.Alternatively or in addition to, the user is able to concurrentlypublish all applications to the cloud. In some embodiments, the user isable to configure which of the devices associated with the accountis/are the target device(s) for subscribing to the publishedapplication(s). The source device typically remains communicativelycoupled with the account during publishing but can becomecommunicatively decoupled after publishing.

At a step 640, the target device, once communicatively coupled with thecloud, subscribes to the published application from the cloud. Thesubscription can be user initiated and/or automatic. In someembodiments, the user is able to select ively subscribe to certainapplications, including those that were published at previous timesand/or by other devices associated with the account. Alternatively or inaddition to, the target device automatically subscribes to any new orupdated applications upon communicatively coupling with the cloud. Thetarget device typically remains communicatively coupled with the accountduring subscription but can selectively become communicatively decoupledafter subscription. After the step 640, the method 625 ends.

In some instances, the user may want to comparison shop for applicationson a computer (e.g., source device), because the computer provides afull screen experience and/or the navigation on the computer is easier.Comparison shopping on such a source device allows the user tosimultaneously run multiple applications, review details forapplications and/or read user application reviews, prior to installingan application on a chosen target device (e.g., mobile device), whichmay have a more limited screen size as compared to that of the sourcedevice.

FIG. 6C illustrates an exemplary method 650 of test driving anapplication in accordance with the present invention. The method 650starts with a step 655, where the source device (e.g., the computer 615of FIG. 6A) obtains an application to test. The step 655 is similar tothe step 630.

At a step 660, the application is evaluated on the source device. Insome embodiments, in order to test the application on the source device,a suitable virtualization environment is required. The virtualizationenvironment can be provided through the BlueStacks™ application playeror by other third party developers. The virtualization environmentallows the user to test an otherwise incompatible application on thesource device. For example, the user with a Windows PC would require avirtualization environment in order to test Android applications.

At a step 565, a decision is made as to whether the application is to bepurchased. If it is determined that the application is not to bepurchased, then the method 650 returns to the step 655. If it isdetermined that the application is to be purchased, then at an optionalstep 670, a purchase workflow is performed, allowing the user to obtainthe application.

At a step 675, the application is published to the cloud from the sourcedevice. The step 675 is similar to the step 635.

At a step 680, the target device, once communicatively coupled with thecloud, subscribes to the published application. The step 680 is similarto the step 640. After the step 680, the method 650 ends.

It should be noted that although the examples previously discussed aboveinclude a marketplace, the present invention is able to function withother mechanisms of placing applications/data on a source device, suchas company managed devices, which have their own software distributionmechanisms. For another example, a user is able to manually download andinstall software from the Internet.

CBDS Advantages

Embodiments of the present invention allow data to be automatically andtransparently synched among two or more devices. The synchronization iseffected through a cloud service. The user experience is advantageouslyseamless. In some embodiments, the cloud service is able tointelligently determine compatibility of data for a target device. Forexample, the cloud service is able to determine whether the targetdevice is able to execute a published application, and to prevent thetarget device from subscribing to the published application until properdependencies are fulfilled on the target device.

Embodiments of the present invention advantageously allow a user to shopfor applications on a source device prior to installing the applicationon a target device, perhaps because the source device provides a betterability to make purchasing decisions.

Embodiments of the present invention advantageously allow a user tostore data with the cloud service, for example, when the user needsadditional storage space on the source device or, for another example,the user needs to reinstall/reconfigure the source device by temporarilyremoving the data from the source device but without permanently losingsuch data.

Embodiments of the present invention advantageously allow a user toaccess SMS messages on a work computer (e.g., target device) via thecloud that were sent to a mobile device (e.g., source device). This isparticularly useful when the user, for example, had forgotten the mobiledevice at home.

Embodiments of the present invention advantageously allow the user todecide that the user no longer wants to play a game on a computer (e.g.,source device) but rather on a mobile device (e.g., target device) sothat the user is able to play the game on the bus to and from work.

Non-Native Notifications Overview

In some embodiments, a target device can also be configured to inform auser regarding notifications generated by non-native applications. Anon-native application can be a guest operating system specificapplication executing within a guest environment by using, such as, theBlueStacks™ application player or the like on the target device.Alternatively, a non-native application can be an application executingon a physically disjoint source device that is communicatively coupledwith the target device via a local pairing mechanism or the BlueStacks™cloud service hosted in the cloud. The target device and the sourcedevice can be similar (e.g., a PC and a PC) or different (e.g., a PC anda MAC, or a PC and a smart phone).

Both the BlueStacks™ application player and the source device aretypically configured to capture notifications generated by applicationsexecuting thereon, and the target device is configured to receive andpresent these non-native notifications to the user. Notificationsinclude alerts, reminders, updates and messages generated byapplications. The user does not need to access non-native applications,or the BlueStacks™ application player or the source device to see thesenon-native notifications. Instead, the user can view these non-nativenotifications at a central location on the target device. It should benoted that non-native notifications, or simply notifications, refer tonotifications generated by applications that are not natively executingwithin the host environment of the target device.

A target device typically has a message center installed thereon. Themessage center is configured to extract, pull or otherwise receivenon-native notifications from various sources, such as from physicallydisjoint source devices and from the BlueStacks™ application player, tobe displayed at a central location on the target device, either with theoriginal or modified content and/or format. In some embodiments, thecentral location on the target device is typically in a pane thatappears in the foreground such that the user is able to see thenon-native notifications even while running other applications. Themessage center can be integral with or separate from the BlueStacks™application player. As such, by installing the BlueStacks™ applicationplayer on the target device, the user will automatically have access tothe message center. In some embodiments, the pane automatically closesafter a predetermined amount of time. Alternatively, the pane closesafter user interaction, such as closing the pane.

A source device typically has a notification tool installed thereon. Thenotification tool is configured to access notifications generated byapplications executing on the source device and is also configured tocommunicate with a message center. In some embodiments, the notificationtool is able to push or otherwise send these notifications to themessage center. In some embodiments, the notification tool is also ableto receive data from the message center for further processing. Thenotification tool can be a standalone feature or can be included as partof the companion application discussed above. As such, by installing thecompanion application on the source device, the user can automaticallyhave access to the notification tool.

The BlueStacks™ application player typically has a notification toolbuilt therein that is configured to access notifications generated byapplications executing within the BlueStacks™ application player and isalso configured to communicate with a message center. In someembodiments, the message center is integral with the BlueStacks™application player. The notification tool is able to push or otherwisesend these notifications to the message center. In some embodiments, thenotification tool is also able to receive data from the message centerfor further processing.

Receiving Notifications on a Target Device

FIGS. 7A-7C illustrate exemplary notification scenarios in accordancewith the present invention and are not intended to limit the presentinvention in any way. In each scenario set forth below, the targetdevice is a computer. Although the source devices and the target deviceillustrated are shown as different devices, they can be all the same.

FIG. 7A illustrates a target device 705 communicatively coupled with asingle source device 715 a. As shown, the target device 705 is acomputer and the source device 715 a is a smart phone. The computer 705and the smart phone 715 a are locally paired using a pairing mechanism,such as Bluetooth or WiFi. Assume a text messaging application is activeon the smart phone 715 a. When a text message arrives at the smart phone715 a, a text notification 720 a is typically shown on the smart phone715 a to indicate that a new text message has just been received. Thetext notification 720 a shows at least part of the text message. Thetext notification 720 a illustrated in FIG. 7A reads “MCH messaged:Movie @ 5?” The notification tool on the smart phone 715 a is configuredto capture the text notification 720 a, and the message center on thecomputer 705 is configured to receive the text notification 720 a fromthe notification tool via the pairing mechanism. The message center onthe computer 705 is configured to thereafter display the same or avariation of the text notification 720 a in a pane 710. In someembodiments, the message center will also display identificationinformation of the smart phone 715 a along with the notification to letthe user know where the notification came from.

Although the target device 705 shown in FIG. 7A is communicativelycoupled with a single source device, the target device 705 can becommunicatively coupled with a plurality of source device. FIG. 7Billustrates the target device 705 communicatively coupled with twosource devices 715 a, 715 b. As shown, the computer 705 iscommunicatively coupled with the smart phone 715 a and a tablet 715 b.The computer 705 is able to couple with the two source devices 715 a,715 b using the same or different coupling mechanism. In FIG. 7B, thecomputer 705 is communicatively coupled with the smart phone 715 a via alocal pairing mechanism, while the computer 705 is communicativelycoupled with the tablet 715 b via the BlueStacks™ cloud service hostedin a cloud 700. As previously discussed above, the BlueStacks™ cloudservice allows publication and subscription of data by devices from thecloud 700. In some embodiments, the tablet 715 b uses the companionapplication thereon to connect with the cloud 700.

Assume a calendar application is active on the tablet 715 b. Prior tothe actual occurrence of an event, a calendar notification 720 b istypically shown on the tablet 715 b to indicate that the event will besoon occurring. The calendar notification 720 b illustrated in FIG. 7Breads “Meeting with Janice in 30 minutes.”

Similar to the smart phone 715 a, the tablet 715 b utilizes anotification tool to capture all notifications generated by any activeapplication, such as the calendar application, executing on the tablet715 b. However, the notification tool is typically integral with thecompanion application installed on the tablet 715 b, although thenotification tool can be separate from but interacts with the companionapplication. The notification tool on the tablet 715 b is configured tocapture the calendar notification 720 b. The companion applicationpublishes the calendar notification 720 b to the cloud 700. The messagecenter on the computer 705 is configured to subscribe to the calendarnotification 720 b. The message center on the computer 705 is configuredto thereafter display the same or a variation of the calendarnotification 720 b in the pane 710. In some embodiments, the messagecenter will also display identification information of the tablet 715 balong with the notification to let the user know where the notificationcame from.

The notification tool of the present invention is able to capture allnotifications, such as alerts, reminders, updates and messages,generated by any active application executing a source device, such asthe smart phone 715 a or the tablet 715 b. In addition to the textmessaging application and the calendar application as discussed above,other exemplary applications include a news feed application (e.g.,mobile Pulse application), a social media application (e.g., mobileFacebook application), an alarm application, a voicemail application,and an email application. Other applications are contemplated. Thenotification tool of the present invention is able to assist in thedelivery of these notifications to a message center on a target device,such as the computer 705.

The coupling between a target device and a source device can be eitherthrough local pairing or the cloud. In some embodiments, the cloud canalso assist a user in the pairing of two or more devices. However,regardless of the coupling mechanisms used and regardless of the numberof source devices the target device is coupled with, the user is able toreceive all notifications across the diverse group of communicativelycoupled source devices at a central location on the target device.

Similarly, the user is also able to receive all notifications from theBlueStacks™ application player at the central location on the targetdevice. FIG. 7C illustrates the target device 705 running theBlueStacks™ application player 715 c, which allows the computer 705 tosupport a multi-OS runtime. In some embodiments, a notification tool anda message center are integral with the BlueStacks™ application player715 c. Alternatively, the notification tool and/or the message centerare separate from but interact with the BlueStacks™ application player715 c.

Assume an email application is active in the B1ueStacks™ applicationplayer 715 c. When an email message arrives, a email notification 720 cis typically shown within the B1ueStacks™ application player 715 c toindicate that a new email message has just been received. The emailnotification 720 c shows at least part of the email message. The emailnotification 720 c illustrated in FIG. 7C reads “TTW wrote on Septtember22 at 5:30 PM; Dear Avi: I cannot wait to see you guys again. I hadfun!” The notification tool of the B1ueStacks™ application player 715 cis configured to capture the email notification 720 c, and the messagecenter is configured to receive the email notification 720 c from thenotification tool. The message center on the computer 705 is configuredto thereafter display the same or a variation of the email notification720 c in the pane 710. In some embodiments, the message center will alsodisplay identification information of where the email notification 720 ccame from along with the notification to let the user know where thenotification came from.

FIG. 7C illustrates the computer 705 in communication only with theB1ueStacks™ application player 715 c. However, it should be noted thatthe computer 705 can concurrently be in communication with one or moresource devices, such as illustrated in FIGS. 7A-7B.

FIG. 8 illustrates an exemplary method 800 of a message center on atarget device in accordance with the present invention. The method 800begins at a step 805, where the message center receives or otherwiseobtains a notification from a notification tool. The notification isgenerated by a non-native application. For example, the non-nativeapplication is executed on a physically disjoint source devicecommunicatively coupled with the target device. For another example, thenon-native application is executed within the B1ueStacks™ applicationplayer on the target device.

At a step 810, the message center informs the user of the notification.In some embodiment, the message center generates a pane in theforeground of the user's workspace. The pane displays, at least, theoriginal or modified content and/or format of the notification.

At an optional step 815, the message center allows the user to accessdata associated with the notification. In some embodiments, when theuser activates the pane, the pane expands to display the entire textmessage (e.g., “MCH Messaged: Movie @ 5? Then dinner afterwards? Let meknow.”) associated with the notification. In some embodiments, if theassociated non-native application is running in the BlueStacks™application player, the BlueStacks™ application player will be broughtfrom the background to the foreground when the user activates the pane.In some embodiments, if the notification is regarding a new voicemailmessage, the user is able to listen to the voicemail on the targetdevice when the user activates the pane.

At an optional step 820, the message center is able to receive a userinput in response to the notification. For example, the user is able todraft a reply text message in a field provided by the message center.

At an optional step 825, the message center pushes or otherwise deliversthe user input to a notification tool for further processing. Forexample, the message center is able to take the reply text message(e.g., the user input) and push the user input to the notification toolfor further processing (e.g., appropriately packaging the user inputsuch that it can be understood by the messaging application on the smartphone and to be sent to the recipient MCH therefrom. Alternatively, themessage center is configured to perform the packaging instead. After thestep 825, the method 800 ends.

Target Device Notification Advantages

Embodiments of the present invention advantageously allow a user to viewall notifications generated by any application on any communicativelycoupled source device at a single location on a target device. The userdoes not need to retrieve the source device to see the notification.This is particularly useful when the user only has the target device inhis possession such as in a meeting or has simply forgotten the sourcedevice at home. Provided that the source device and the target deviceare communicatively coupled, the target device is able to indicate tothe user all notifications generated from the source device.

One of ordinary skill in the art will realize other uses and advantagesalso exist. While the invention has been described with reference tonumerous specific details, one of ordinary skill in the art willrecognize that the invention can be embodied in other specific formswithout departing from the spirit of the invention. Thus, one ofordinary skill in the art will understand that the invention is not tobe limited by the foregoing illustrative details, but rather is to bedefined by the appended claims.

1-24. (canceled)
 25. A system comprising: a first operating systemincluding a notification tool that is configured to run in the firstoperating system and to capture notifications generated by a pluralityof applications executing in the first operating system; and a secondoperating system including a message center that is configured to run inthe second operating system and that is communicatively coupled with thenotification tool running in the first operating system, wherein themessage center running in the second operating system is configured toobtain a notification that is generated by one of the plurality ofapplications executing in the first operating system and that iscaptured by the notification tool running in the first operating system,and is configured to present the obtained notification to a user. 26.The system of claim 25, wherein the application executing in the firstoperating system is a text message application, a news feed application,a networking application, an email application, a calendar application,a game application, a tool application, a marketing application, or analarm application.
 27. The system of claim 25, wherein the obtainednotification is presented to the user in a central location of adisplay.
 28. The system of claim 25, wherein the obtained notificationis presented to a user over a work area of a display.
 29. The system ofclaim 25, wherein the message center running in the second operatingsystem is also configured to receive a user input, in response to thenotification, in the message center, and to push the user input to theapplication that generated the notification in the first operatingsystem.
 30. The system of claim 29, wherein the notification toolrunning in the first operating system is configured to package the userinput such that the application that generated the notification in thefirst operating system understands the user input that is received bythe message center running in the second operating system.
 31. Thesystem of claim 25, wherein the second operating system is a hostoperating system of a computing device and the first operating system isa guest operating system of the same computing device.
 32. The system ofclaim 25, wherein the second operating system is on a target device, andthe first operating system is on a source device that is distinct andseparate from the target device.
 33. The system of claim 25, furthercomprising an account in the cloud, wherein the target device and thesource device are communicatively coupled via the account in the cloud.34. The system of claim 33, wherein the source device and the targetdevice are each configured to at least one of publish data to the cloudand subscribe data from the cloud.
 35. The system of claim 25, furthercomprising a third operating system including a notification tool thatis configured to run in the third operating system and to capturenotifications generated by a plurality of applications executing in thethird operating system.
 36. The system of claim 35, wherein the messagecenter running in the second operating system is communicatively coupledwith the notification tool running in the third operating system,wherein the message center running in the second operating system isconfigured to obtain a notification that is captured by the notificationtool running in the third operating system.
 37. The system of claim 25,further comprising an application player.
 38. The system of claim 37,wherein the message center is integral with the application player. 39.The system of claim 37, wherein the application player is integral withthe application player.
 40. The system of claim 37, wherein theapplication player includes an application broker that interfaces with aplurality of online application sources, wherein the application playeris configured to: receive a search text with the application broker;search each of the online application sources; return a results listbased on the search text, wherein the results list comprises one or moreentries representing one or more applications from the applicationsources; and display a refined results list, wherein the refined resultslist is determined by excluding duplicate entries from the results listthat represent applications from two or more of the application sourcessuch that each of the one or more applications are represented only asingle entry.
 41. A method comprising: running a notification tool in afirst operating system, wherein the notification tool is configured tocapture notifications generated by a plurality of applications executingin the first operating system; and running a message center in a secondoperating system, wherein the message center is communicatively coupledwith the notification tool running in the first operating system and isconfigured to: obtain a notification that is generated by one of theplurality of applications executing in the first operating system andthat is captured by the notification tool running in the first operatingsystem; and to present the obtained notification to a user.